/******************************************************
Cours:   LOG121
Session: A2013
Groupe:  01
Projet: Laboratoire #3
�tudiant(e)s:  Jean-Christophe Decary
				Guillaume Durand
				Phillipe potvin
              
              
Professeur : Ghizlane El Boussaidi
Nom du fichier: Partie.java
Date cr��: 2013-11-14

*******************************************************/
package framework;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class Partie {
	protected int nbTurn;
	protected int currentTurn;
	protected Joueur currentPlayer; 
	private List<Joueur> gamePlayers;
	
	/**
	 * Constructeur de partie
	 * @param pJoueurs La list de joueur qui participent � la partie
	 */
	public Partie(List<Joueur> pJoueurs){
		this.gamePlayers=new ArrayList<Joueur>(pJoueurs);
		this.currentTurn=1;
		this.currentPlayer=null;
		//PlayerResetStats();
		System.out.println(gamePlayers);
	}
	/**
	 * Obtient le tour courant
	 * @return le # du tour courant, le premier tour sera identifi� 1 et non 0
	 */
	public int getCurrentTurn(){
		return this.currentTurn;
	}
	/**
	 * Obtient le joueur courant
	 * @return retour le joueur courant
	 */
	public Joueur getCurrentPlayer(){
		return this.currentPlayer;
	}
	/**
	 * Obtient la liste des joueurs
	 * @return retourne la liste des joueurs
	 */
	public  List<Joueur> getPlayers(){
		return this.gamePlayers;
	}
	
	public void setCurrentPlayer(Joueur j){
		this.currentPlayer = j;
	}
	
	
	/**
	 * Jouer la Partie	
	 * @param g la partie qui doit �tre jouer
	 * @param nbTour le nombre de tour qui doit �tre jouer
	 */
	public final void playGame(Game g,int nbTour){
		
		
		  this.nbTurn = nbTour;
			System.out.println("Game Started");
			GamePlayed p=new GamePlayed(g.gamePlayed.size()+1,this.nbTurn);
			p.setPlayersInGame(this.gamePlayers);
	        while (currentTurn<=nbTour) {
	        	 Iterator<Joueur> buddys = this.gamePlayers.iterator();
	        	    while (buddys.hasNext()){
	        	    	this.currentPlayer=buddys.next();
	        	    	g.makePlay(this.currentPlayer);
	        	    }
	        	currentTurn++;
	        

	        p.setPlayersStats(g.calculerLeVainqueur(this.gamePlayers));
	        System.out.println("Results:"+getPlayers());
	        System.out.println("Game Ended");
	       
	        g.gamePlayed.add(p);
		}
	}
}
